# 编译器和编译选项
CC = gcc
CFLAGS = -Wall -I./supermarket_management/include

# 目录定义
SRC_DIR = supermarket_management\src
OBJ_DIR = supermarket_management\obj
BIN_DIR = supermarket_management\bin

# 手动列出源文件以确保兼容性
SRCS = supermarket_management\src\main.c \
       supermarket_management\src\user.c \
       supermarket_management\src\goods.c \
       supermarket_management\src\order.c \
       supermarket_management\src\utils.c \
       supermarket_management\src\list.c

# 对应的目标文件
OBJS = $(OBJ_DIR)\main.o $(OBJ_DIR)\user.o $(OBJ_DIR)\goods.o $(OBJ_DIR)\order.o $(OBJ_DIR)\utils.o $(OBJ_DIR)\list.o

TARGET = $(BIN_DIR)\supermarket.exe

# 默认目标
all: $(TARGET)

# 链接生成可执行文件
$(TARGET): $(OBJS)
	@if not exist $(BIN_DIR) mkdir $(BIN_DIR)
	$(CC) $(CFLAGS) -o $@ $^

# 编译每个源文件生成目标文件
$(OBJ_DIR)\main.o: $(SRC_DIR)\main.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)\user.o: $(SRC_DIR)\user.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)\goods.o: $(SRC_DIR)\goods.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)\order.o: $(SRC_DIR)\order.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)\utils.o: $(SRC_DIR)\utils.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)\list.o: $(SRC_DIR)\list.c
	@if not exist $(OBJ_DIR) mkdir $(OBJ_DIR)
	$(CC) $(CFLAGS) -c -o $@ $<

# 清理
clean:
	@if exist $(OBJ_DIR) rmdir /s /q $(OBJ_DIR)
	@if exist $(BIN_DIR) rmdir /s /q $(BIN_DIR)
	@echo 清理完成！

# 运行程序
run:
	$(TARGET)

.PHONY: all clean run